package com.uade.empresasdistribuidas.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.uade.empresasdistribuidas.action.constants.ActionConstants;
import com.uade.empresasdistribuidas.model.EnvioLocal;
import com.uade.empresasdistribuidas.model.Pedido;
import com.uade.empresasdistribuidas.view.PedidoView;

public class PersistirPedidoAction extends ActionSupport{
	
	private PedidoView pedidoView;

	public String execute(){
		String sucursalOrigen=(String)ActionContext.getContext().getSession().get(ActionConstants.SUCURSAL_ORIGEN);
		String sucursalLlegada=(String)ActionContext.getContext().getSession().get(ActionConstants.SUCURSAL_LLEGADA);
		Pedido pedido=(Pedido)ActionContext.getContext().getSession().get(ActionConstants.Pedido);
		EnvioLocal envio = EnvioLocal.obtenerEnvioEnEspera(
				sucursalOrigen,
				sucursalLlegada, pedido.getPeso(),
				pedido.esRefrigerado());
		try {
			// No hay ningun envio creado, hay que crear uno nuevo
			if (envio == null) {
				envio = new EnvioLocal(sucursalOrigen,
						sucursalLlegada, pedido.getPeso(),
						pedido.esRefrigerado(),pedido.getFechaMaxima());
				envio.persistirEnvio();
				envio.asignarVehiculo();
			}
			pedido.asignarEnvio(envio.getEnvioDTO());
			pedido.persistirPedido();
			envio.agregarPedido(pedido.getPedido());
			envio.procesarSalida();
			pedidoView=new PedidoView(pedido.getPedido());
		} catch (Exception e) {
			return ERROR;
		}
		return SUCCESS;
	}

	public PedidoView getPedidoView() {
		return pedidoView;
	}

	public void setPedidoView(PedidoView pedidoView) {
		this.pedidoView = pedidoView;
	}
	
	
	
}
